// 定义经纬度类型
export type LngLat = [number, number];

/**
 * InfoWindow模块接口 - 定义模块对外暴露的结构
 */
export interface InfoWindowModule {
  /** 模块名称 */
  name: string;
  /** 信息窗口实例数组 */
  instance: InfoWindowInstance[];
  /** 事件处理对象 */
  events: {
    /** 移除所有信息窗口的事件处理函数 */
    remove: () => void;
  };
}

/**
 * 信息窗口实例接口- 适用于调取createSingleInfoWindow绘制单条轨迹的返回值
 * @property infoWindow - 信息窗口实例
 */
export type InfoWindowInstance = any;

/**
 * 信息窗口配置选项
 */
export interface InfoWindowOptions {
  // 是否自定义窗体;
  isCustom?: boolean;
  /** 是否自动调整位置以避免超出地图边界 */
  autoMove?: boolean;
  // 自动平移到视野内后的上右下左的避让宽度;
  avoid?: [number, number, number, number];
  // 点击地图是否关闭信息窗口;
  closeWhenClickMap?: boolean;
  /** 信息窗口内容 */
  content?: string | HTMLElement | ((e: any) => string | HTMLElement);
  // 信息窗口大小
  size?: [number, number];
  // 信息窗体锚点
  anchor?:
    | "top-left"
    | "top-center"
    | "top-right"
    | "middle-left"
    | "center"
    | "middle-right"
    | "bottom-left"
    | "bottom-center"
    | "bottom-right";
  /** 偏移量 [x, y] */
  offset?: [number, number];
  /** 位置坐标 [lng, lat] */
  position: LngLat;
}
